Innovation in the modern business world is often an unquenchable necessity which demands more from, and imposes more complexity upon, software. Conventional software development is itself frequently a complex process typically consisting of authoring source code using a particular programming language. Most modern-day software applications are created using a high level object-oriented programming language (“OOPL”) such as C++, SmallTalk, or Java™. The object-oriented approach to programming subsists around “objects,” which are structured software entities comprising, for example, data elements (or attributes) and methods (or functions). The attributes and functions can enable objects to model virtually any real-world entity in terms of the entity's characteristics. In object-oriented programming, the programmer traditionally designs a program as a set of cooperating objects rather than as a set of cooperating functions.
Although the object-oriented approach is generally intended to model objects and help create structure, current OOPLs instead, and perhaps ironically, typically require programming codes to be written in an unstructured text environment understood only by those skilled in the art of programming. That is, using a particular OOPL typically requires thorough familiarity with, and adherence to, grammatical rules, syntax and language for that OOPL, and written code can quickly become voluminous and hard to manage for a software project. As a result, the development, design, comprehension and/or maintenance of software is often burdensome and difficult.
Further, software programs are conventionally compiled and delivered in binary format, which cannot be comprehended or modified. Finally, OOPLs typically do not support multi-applications documents. Instead, OOPLs generally support single application documents because they are produced for a single software application.
Thus, an expert in a particular field (i.e., a domain expert) or business usually cannot read, write, customize, enhance or modify an object-oriented program that the domain expert uses for personal or business computing.
Meanwhile, relational database tools currently represent a relatively mature and popular technology with which software developers and non-developers alike have extensive familiarity. Database tables are clean, self descriptive, intuitive and able to organize complex information while remaining easy to work with. Adding an object-oriented paradigm to database management systems (DBMS) has been known in the art for some time, and emerged as a new breed of database technology. However, software development continues to be done in the traditional, difficult, time-consuming, and costly way of text-based source code.
As software is increasingly looked for to be a vehicle and catalyst for innovation, the methodology for software development should be as simple as possible, yet still yield high quality applications. In other words, the true rewards of software lie in the destination (applications) and not the voyage (coding). Unfortunately, the voyage throughout the lifecycle of any software project using traditional development tools is, more often than not, a difficult and costly one—inviting complexity with maybe a million lines of code, lowering productivity between developers trying to make the “puzzle fit,” increasing costs, decelerating time-to-market, and widening the chasm between software development and domain knowledge. And, as generally difficult as it may be for a professional programmer to design, develop, deploy and manage software, it is nearly impossible for a domain expert or businessperson to do so using traditional OOPLs. The solution to these obstacles may be found in the language of tables.
Accordingly, a tabular software development environment that allows domain experts to author, deploy and manage object-oriented software applications is needed to solve the shortcomings of software and software development described above.